1. Field of the Invention
The present invention is generally directed toward a method and an apparatus for embedded systems. More specifically, the present invention is directed to writing configuration data to a memory device of an embedded system.
2. Discussion of Related Art
An embedded system typically comprises a microprocessor and a memory device. Software instructions stored in the memory device direct the processor to perform predetermined functions, such as controlling an input/output device that is communicatively connected to the processor. Systems and associated software are typically considered as being embedded when a user has a limited interaction with the software that directs the processor. Limited interaction to the system makes the system less prone to errors inadvertently introduced by the user. A very common example of an embedded system would be an embedded processing system having software that directs the process to display information on an Liquid Crystal Display (LCD) of a microwave oven.
Embedded systems are used in a myriad of devices; one such device is a Redundant Arrays of Independent Disks (RAID) controller. In the RAID controller, embedded software directs a processor of the RAID controller to access multiple disks such as computer hard drives. The embedded software also has instructions that direct the processor to read and write to anyone of the disks. The user has a limited interaction with the embedded software that directs the processor. However, instances occur when a user may desire to access a small portion of the embedded software in the RAID controller.
Occasionally, a user wishing to access embedded software of an embedded system will typically do so by writing user-defined variables to the embedded software. The user-defined variables usually include information regarding the user's company name, system types, and system names, to name a few examples. The user-defined variables are stored in sections of data called data structures. The data structures typically reside in sets of data called configuration data sets. The configuration data sets also include software instructions that use the data structures to configure the embedded system.
Manufacturers normally upgrade embedded software to add new features and/or improve a performance of an embedded system. Upgrades to the embedded software are performed because upgrading software is much less expensive than changing hardware every time a new feature is developed. Furthermore, creating new features in software is typically easier than creating new features in hardware. New software is programmed into the embedded system by overwriting existing software within a storage device of the embedded system such as a Non-Volatile Random Access Memory (NVRAM).
As new software is programmed into an embedded system, outdated software is overwritten. Information contained in the outdated software is typically destroyed when the outdated software is overwritten with new software. Thus, user-defined variables that once resided in the outdated software are destroyed and have to be rewritten into data structures of the new software. The process of rewriting the user-defined variables is burdensome and characteristically prone to errors when rewriting the user-defined variables is performed manually.
Currently, a difficulty in overwriting outdated software with new software that maintains user-defined variables exists for a manufacturer of an embedded system. Therefore, users of embedded systems are forced to rewrite their user-defined variables whenever a new software package is delivered to the embedded system. A time between rewrites of user-defined variables could be extended if a software developer simply waited until delivering the new software package to include a larger number of new features, thereby extending a time between new software releases. However, bundling new software features into large software packages means waiting to use desired new software features until the new software package is delivered. Waiting for software reduces an efficiency of a user of an embedded system, possibly costing the user reduced revenue.
While extending the time between deliveries of software features extends the time between rewrites of user-defined variables, the previously described inefficiency of the user of the embedded system can be magnified when the user has to manually rewrite the user-defined variables. Eliminating rewrites would improve the efficiency of the user and allow the software developer to deliver new software features as they become available. Therefore, there exists a need for a method and system of delivering new software to an embedded system that does not overwrite existing user-defined variables.